package studio.raptor.dispatcher.scheduler.base;

import java.util.List;

/**
 * 用于协调分发任务的注册中心.
 * @author jack
 * @since 1.0
 */
public interface CoordinatorRegistryCenter extends RegistryCenter{

  /**
   * 直接从注册中心而非本地缓存获取数据.
   *
   * @param key 键
   * @return 值
   */
  String getDirectly(String key);

  /**
   * 获取子节点名称集合.
   *
   * @param key 键
   * @return 子节点名称集合
   */
  List<String> getChildrenKeys(String key);

  /**
   * 获取子节点数量.
   *
   * @param key 键
   * @return 子节点数量
   */
  int getNumChildren(String key);

  /**
   * 持久化临时注册数据.
   *
   * @param key 键
   * @param value 值
   */
  void persistEphemeral(String key, String value);

  /**
   * 持久化顺序注册数据.
   *
   * @param key 键
   * @param value 值
   * @return 包含10位顺序数字的znode名称
   */
  String persistSequential(String key, String value);

  /**
   * 持久化临时顺序注册数据.
   *
   * @param key 键
   */
  void persistEphemeralSequential(String key);



}
